/*************************************************************************
 * File Name:    B.cc
 * Author:       zero91
 * Mail:         jianzhang9102@gmail.com
 * Created Time: Sun 13 Oct 2013 11:49:36 PM CST
 * 
 * Description:  http://codeforces.com/contest/283/problem/B
 ************************************************************************/

#include <iostream>
#include <fstream>
#include <sstream>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <deque>
#include <map>
#include <set>
#include <functional>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <cmath>
#include <iomanip>

using namespace std;

#define MAXN 200010

long long num[MAXN], dp[2][MAXN];
bool visited[2][MAXN];
int n;

long long
dfs(int k, int op)
{
    if (k <= 0 || k > n) return 0;

    if (dp[op][k] != 0) return dp[op][k];

    if (visited[op][k]) {
        dp[op][k] = -1;
        return -1;
    }
    visited[op][k] = true;
    long long t;

    if (op == 0) t = dfs(k + num[k], 1);
    else t = dfs(k - num[k], 0);

    if (t == -1) dp[op][k] = -1;
    else dp[op][k] = t + num[k];

    return dp[op][k];
}

int
main(int argc, char *argv[])
{
    std::ios_base::sync_with_stdio(false);

    while (cin >> n) {
        for (int i = 2; i <= n; ++i) {
            cin >> num[i];
        }
        memset(visited, false, sizeof(visited));
        memset(dp, 0, sizeof(dp));
        for (int i = 2; i <= n; ++i) {
            dfs(i, 0), dfs(i, 1);
        }

        for (int i = 1; i < n; ++i) {
            if (dp[1][i + 1] == -1) cout << "-1" << endl;
            else cout << dp[1][1 + i] + i << endl;
        }
    }

    return 0;
}
